const app = getApp()
const { getMeetingNews } = require("../../utils/http/api")
const tool = require("../../utils/tool")

Page({
  /**
   * 页面的初始数据
   */
  data: {
    //获取全局变量 导航栏的高度statusBarHeight
    top: Number(app.globalData.menu.top),
    height: Number(app.globalData.menu.height),
    // 新闻数据
    newsList: [],
    filteredNewsList: [],
    searchValue: '',
    selectedTag: 'all'
  },

  /**
   * 获取新闻列表
   */
  getNewsList() {
    wx.showLoading({
      title: '加载中...',
    })
    let _this = this
    getMeetingNews().then((res) => {
      if (res.rows.length > 0) {
        const newsList = res.rows
        newsList.forEach((item) => {
          item.createTime = tool.changeTime(item.createTime, 10)
          if (item.newsImage != undefined) {
            item.newsImage = item.newsImage.split(',')
          }
        })
        _this.setData({
          newsList,
          filteredNewsList: newsList
        })
        wx.hideLoading()
      }
    }).catch((error) => {
      console.error('获取新闻列表失败:', error)
      wx.hideLoading()
      wx.showToast({
        title: '加载失败',
        icon: 'none'
      })
    })
  },

  /**
   * 搜索输入处理
   */
  onSearchInput(e) {
    const searchValue = e.detail.value
    this.setData({
      searchValue
    })
    this.filterNews()
  },

  /**
   * 搜索确认处理
   */
  onSearch(e) {
    const searchValue = e.detail.value || this.data.searchValue
    this.setData({
      searchValue
    })
    this.filterNews()
  },

  /**
   * 标签选择处理
   */
  onTagSelect(e) {
    const selectedTag = e.currentTarget.dataset.tag
    this.setData({
      selectedTag
    })
    this.filterNews()
  },

  /**
   * 筛选新闻
   */
  filterNews() {
    const { newsList, searchValue, selectedTag } = this.data
    let filteredList = [...newsList]

    // 按标签筛选
    if (selectedTag !== 'all') {
      filteredList = filteredList.filter(item => {
        switch (selectedTag) {
          case 'activity':
            return item.newsDescription && item.newsDescription.includes('活动')
          case 'conference':
            return item.newsTitle && (item.newsTitle.includes('会议') || item.newsTitle.includes('学术'))
          case 'news':
            return item.newsDescription && item.newsDescription.includes('新闻')
          default:
            return true
        }
      })
    }

    // 按搜索关键词筛选
    if (searchValue.trim()) {
      const keyword = searchValue.trim().toLowerCase()
      filteredList = filteredList.filter(item => {
        return (
          (item.newsTitle && item.newsTitle.toLowerCase().includes(keyword)) ||
          (item.newsContent && item.newsContent.toLowerCase().includes(keyword)) ||
          (item.newsLocation && item.newsLocation.toLowerCase().includes(keyword))
        )
      })
    }

    this.setData({
      filteredNewsList: filteredList
    })
  },

  /**
   * 跳转到详情页
   */
  goToDetail(e) {
    const item = e.currentTarget.dataset.item
    if (!item) return

    // 使用持久化存储传递数据
    try {
      wx.setStorageSync('newsDetail', item)
      wx.navigateTo({
        url: '/pages/newsDetail/newsDetail'
      })
    } catch (error) {
      console.error('存储数据失败:', error)
      wx.showToast({
        title: '跳转失败',
        icon: 'none'
      })
    }
  },

  /**
   * 返回上一页
   */
  goBack() {
    wx.navigateBack({
      delta: 1
    })
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.getNewsList()
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.getNewsList()
    wx.stopPullDownRefresh()
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    // 可以在这里实现分页加载
    console.log('触底加载更多')
  }
})